![]() |
![]() |
![]() | |
![]() ![]() ![]() ![]()
╤σ≥σΓ√σ ∩≡ΦδεµσφΦ |
╧≡ΦδεµσφΦ SocketServ Φ SocketClient┬ Ωα≈σ±≥Γσ ∩≡Φ∞σ≡α ∞√ ∩≡ΦΓσΣσ∞ Φ±⌡εΣφ√σ ≥σΩ±≥√ ΣΓ≤⌡ ∩≡ΦδεµσφΦΘ Java, ≡αßε≥α■∙Φ⌡ ± ∩ε≥εΩεΓ√∞Φ ±εΩσ≥α∞Φ. ╬Σφε Φτ ²≥Φ⌡ ∩≡ΦδεµσφΦΘ φατ√Γασ≥± SocketServ Φ Γ√∩εδφ σ≥ ≡εδⁿ ±σ≡Γσ≡α, Γ≥ε≡εσ φατ√Γασ≥± SocketClient Φ ±δ≤µΦ≥ ΩδΦσφ≥ε∞. ╧≡ΦδεµσφΦσ SocketServ Γ√ΓεΣΦ≥ φα Ωεφ±εδⁿ ±≥≡εΩ≤ "Socket Server Application" Φ τα≥σ∞ ∩σ≡σ⌡εΣΦ≥ Γ ±ε±≥ε φΦσ εµΦΣαφΦ ±εσΣΦφσφΦ ± ΩδΦσφ≥±ΩΦ∞ ∩≡ΦδεµσφΦσ∞ SocketClient. ╧≡ΦδεµσφΦσ SocketClient ≤±≥αφαΓδΦΓασ≥ ±εσΣΦφσφΦσ ± ±σ≡Γσ≡ε∞ SocketServ, Φ±∩εδⁿτ≤ ∩ε≥εΩεΓ√Θ ±εΩσ≥ ± φε∞σ≡ε∞ 9999 (²≥ε≥ φε∞σ≡ Γ√ß≡αφ φα∞Φ ∩≡εΦτΓεδⁿφε). ─αδσσ ΩδΦσφ≥±Ωεσ ∩≡ΦδεµσφΦσ Γ√ΓεΣΦ≥ φα ±Γε■ Ωεφ±εδⁿ ∩≡Φπδα°σφΦσ Σδ ΓΓεΣα ±≥≡εΩ. ┬ΓσΣσφφ√σ ±≥≡εΩΦ ε≥εß≡αµα■≥± φα Ωεφ±εδΦ Φ ∩σ≡σΣα■≥± ±σ≡Γσ≡φε∞≤ ∩≡ΦδεµσφΦ■. ╤σ≡Γσ≡, ∩εδ≤≈ΦΓ ±≥≡εΩ≤, ε≥εß≡αµασ≥ σσ Γ ±Γεσ∞ εΩφσ Φ ∩ε±√δασ≥ εß≡α≥φε ΩδΦσφ≥≤. ╩δΦσφ≥ Γ√ΓεΣΦ≥ ∩εδ≤≈σφφ≤■ ε≥ ±σ≡Γσ≡α ±≥≡εΩ≤ φα Ωεφ±εδΦ. ╩επΣα ∩εδⁿτεΓα≥σδⁿ ΓΓεΣΦ≥ ±≥≡εΩ≤ "quit", ÷ΦΩδ ΓΓεΣα Φ ∩σ≡σΣα≈Φ ±≥≡εΩ ταΓσ≡°ασ≥± . ┬σ±ⁿ ∩≡ε÷σ±± ∩εΩαταφ φα ≡Φ±. 3 Φ 4. ╨Φ±. 3. ╬Ωφε ΩδΦσφ≥±Ωεπε ∩≡ΦδεµσφΦ ╨Φ±. 4. ╬Ωφε ±σ≡Γσ≡φεπε ∩≡ΦδεµσφΦ ╟Σσ±ⁿ Γ εΩφσ ΩδΦσφ≥±Ωεπε ∩≡ΦδεµσφΦ ∞√ ΓΓσδΦ φσ±ΩεδⁿΩε ±≥≡εΩ, ∩≡Φ≈σ∞ ∩ε±δσΣφ ±≥≡εΩα ß√δα ±≥≡εΩεΘ "quit", ταΓσ≡°ΦΓ°α ≡αßε≥≤ ∩≡ΦδεµσφΦΘ. ╚±⌡εΣφ√Θ ≥σΩ±≥ ±σ≡Γσ≡φεπε ∩≡ΦδεµσφΦ SocketServ╚±⌡εΣφ√Θ ≥σΩ±≥ ±σ≡Γσ≡φεπε ∩≡ΦδεµσφΦ SocketServ ∩≡ΦΓσΣσφ Γ δΦ±≥Φφπσ 3. ╦Φ±≥Φφπ 3. ╘αΘδ SocketServ.java import java.io.*; import java.net.*; import java.util.*; public class SocketServ { public static void main(String args[]) { byte bKbdInput[] = new byte[256]; ServerSocket ss; Socket s; InputStream is; OutputStream os; try { System.out.println( "Socket Server Application"); } catch(Exception ioe) { System.out.println(ioe.toString()); } try { ss = new ServerSocket(9999); s = ss.accept(); is = s.getInputStream(); os = s.getOutputStream(); byte buf[] = new byte[512]; int lenght; while(true) { lenght = is.read(buf); if(lenght == -1) break; String str = new String(buf, 0); StringTokenizer st; st = new StringTokenizer( str, "\r\n"); str = new String( (String)st.nextElement()); System.out.println("> " + str); os.write(buf, 0, lenght); os.flush(); } is.close(); os.close(); s.close(); ss.close(); } catch(Exception ioe) { System.out.println(ioe.toString()); } try { System.out.println( "Press <Enter> to terminate application..."); System.in.read(bKbdInput); } catch(Exception ioe) { System.out.println(ioe.toString()); } } } ╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α ±σ≡Γσ≡φεπε ∩≡ΦδεµσφΦ SocketServ┬ ∞σ≥εΣσ main, ∩εδ≤≈α■∙σ∞ ≤∩≡αΓδσφΦσ ±≡ατ≤ ∩ε±δσ τα∩≤±Ωα ∩≡ΦδεµσφΦ , ∞√ ε∩≡σΣσδΦδΦ φσ±ΩεδⁿΩε ∩σ≡σ∞σφφ√⌡. ╠α±±ΦΓ bKbdInput ≡ατ∞σ≡ε∞ 256 ßαΘ≥ ∩≡σΣφατφα≈σφ Σδ ⌡≡αφσφΦ ±≥≡εΩ, ΓΓσΣσφφ√⌡ ∩≡Φ ∩ε∞ε∙Φ ΩδαΓΦα≥≤≡√. ┬ ∩σ≡σ∞σφφ≤■ ss Ωδα±±α ServerSocket ß≤Σσ≥ τα∩Φ±αφα ±±√δΩα φα εß·σΩ≥, ∩≡σΣφατφα≈σφφ√Θ Σδ ≤±≥αφεΓδσφΦ Ωαφαδα ±Γ τΦ ≈σ≡στ ∩ε≥εΩεΓ√Θ ±εΩσ≥ (φε φσ ±±√δΩα φα ±α∞ ±εΩσ≥): ServerSocket ss; ╤±√δΩα φα ±εΩσ≥, ± Φ±∩εδⁿτεΓαφΦσ∞ Ωε≥ε≡επε ß≤Σσ≥ ∩≡εΦ±⌡εΣΦ≥ⁿ ∩σ≡σΣα≈α Σαφφ√⌡, ⌡≡αφΦ≥± Γ ∩σ≡σ∞σφφεΘ ± Φ∞σφσ∞ s Ωδα±±α Socket: Socket s; ╩≡ε∞σ ≥επε, ∞√ ε∩≡σΣσδΦδΦ ∩σ≡σ∞σφφ√σ is Φ os, ±εε≥Γσ≥±≥Γσφφε, Ωδα±±εΓ InputStream Φ OutputStream: InputStream is; OutputStream os; ┬ ²≥Φ ∩σ≡σ∞σφφ√σ ß≤Σ≤≥ τα∩Φ±αφ√ ±±√δΩΦ φα Γ⌡εΣφεΘ Φ Γ√⌡εΣφεΘ ∩ε≥εΩ Σαφφ√⌡, Ωε≥ε≡√σ ±Γ ταφ√ ± ±εΩσ≥ε∞. ╧ε±δσ ε≥εß≡αµσφΦ φα Ωεφ±εδΦ ±≥≡εΩΦ φατΓαφΦ ∩≡ΦδεµσφΦ , ∞σ≥εΣ main ±ετΣασ≥ εß·σΩ≥ Ωδα±±α ServerSocket, ≤Ωατ√Γα Ωεφ±≥≡≤Ω≥ε≡≤ φε∞σ≡ ∩ε≡≥α 9999: ss = new ServerSocket(9999); ╩εφ±≥≡≤Ω≥ε≡ ΓετΓ≡α∙ασ≥ ±±√δΩ≤ φα εß·σΩ≥, ± Φ±∩εδⁿτεΓαφΦσ∞ Ωε≥ε≡επε ∞εµφε ≤±≥αφεΓΦ≥ⁿ Ωαφαδ ∩σ≡σΣα≈Φ Σαφφ√⌡ ± ΩδΦσφ≥ε∞. ╩αφαδ ≤±≥αφαΓδΦΓασ≥± ∞σ≥εΣε∞ accept: s = ss.accept(); ▌≥ε≥ ∞σ≥εΣ ∩σ≡σΓεΣΦ≥ ∩≡ΦδεµσφΦσ Γ ±ε±≥ε φΦσ εµΦΣαφΦ Σε ≥σ⌡ ∩ε≡, ∩εΩα φσ ß≤Σσ≥ ≤±≥αφεΓδσφ Ωαφαδ ∩σ≡σΣα≈Φ Σαφφ√⌡. ╠σ≥εΣ accept Γ ±δ≤≈ασ ≤±∩σ°φεπε ±ετΣαφΦ Ωαφαδα ∩σ≡σΣα≈Φ Σαφφ√⌡ ΓετΓ≡α∙ασ≥ ±±√δΩ≤ φα ±εΩσ≥, ± ∩≡Φ∞σφσφΦσ∞ Ωε≥ε≡επε φ≤µφε ∩≡ΦφΦ∞α≥ⁿ Φ ∩σ≡σΣαΓα≥ⁿ Σαφφ√σ. ═α ±δσΣ≤■∙σ∞ ²≥α∩σ ±σ≡Γσ≡ ±ετΣασ≥ Γ⌡εΣφεΘ Φ Γ√⌡εΣφεΘ ∩ε≥εΩΦ, Γ√τ√Γα Σδ ²≥επε ∞σ≥εΣ√ getInputStream Φ getOutputStream, ±εε≥Γσ≥±≥Γσφφε: is = s.getInputStream(); os = s.getOutputStream(); ─αδσσ ∩≡ΦδεµσφΦσ ∩εΣπε≥αΓδΦΓασ≥ ß≤⌠σ≡ buf Σδ ∩≡Φσ∞α Σαφφ√⌡ Φ ε∩≡σΣσδ σ≥ ∩σ≡σ∞σφφ≤■ length, Γ Ωε≥ε≡≤■ ß≤Σσ≥ τα∩Φ±√Γα≥ⁿ± ≡ατ∞σ≡ ∩≡Φφ ≥επε ßδεΩα Σαφφ√⌡: byte buf[] = new byte[512]; int lenght; ╥σ∩σ≡ⁿ Γ±σ πε≥εΓε Σδ τα∩≤±Ωα ÷ΦΩδα ∩≡Φσ∞α Φ εß≡αßε≥ΩΦ ±≥≡εΩ ε≥ ΩδΦσφ≥±Ωεπε ∩≡ΦδεµσφΦ . ─δ ≈≥σφΦ ±≥≡εΩΦ ∞√ Γ√τ√Γασ∞ ∞σ≥εΣ read ∩≡Φ∞σφΦ≥σδⁿφε Ωε Γ⌡εΣφε∞≤ ∩ε≥εΩ≤: lenght = is.read(buf); ▌≥ε≥ ∞σ≥εΣ ΓετΓ≡α∙ασ≥ ≤∩≡αΓδσφΦσ ≥εδⁿΩε ∩ε±δσ ≥επε, ΩαΩ Γ±σ Σαφφ√σ ß≤Σ≤≥ ∩≡ε≈Φ≥αφ√, ßδεΩΦ≡≤ ∩≡ΦδεµσφΦσ φα Γ≡σ∞ ±ΓεσΘ ≡αßε≥√. ┼±δΦ ≥αΩα ßδεΩΦ≡εΓΩα φσµσδα≥σδⁿφα, Γα∞ ±δσΣ≤σ≥ Γ√∩εδφ ≥ⁿ εß∞σφ Σαφφ√∞Φ ≈σ≡στ ±εΩσ≥ Γ ε≥ΣσδⁿφεΘ ταΣα≈σ. ╠σ≥εΣ read ΓετΓ≡α∙ασ≥ ≡ατ∞σ≡ ∩≡Φφ ≥επε ßδεΩα Σαφφ√⌡ ΦδΦ -1, σ±δΦ ∩ε≥εΩ Φ±≈σ≡∩αφ. ╠√ Γε±∩εδⁿτεΓαδΦ±ⁿ ²≥Φ∞ εß±≥ε ≥σδⁿ±≥Γε∞ Σδ ταΓσ≡°σφΦ ÷ΦΩδα ∩≡Φσ∞α Σαφφ√⌡: if(lenght == -1) break; ╧ε±δσ ταΓσ≡°σφΦ ∩≡Φσ∞α ßδεΩα Σαφφ√⌡ ∞√ ∩≡σεß≡ατ≤σ∞ ∞α±±ΦΓ Γ ≥σΩ±≥εΓ≤■ ±≥≡εΩ≤ str Ωδα±±α String, ≤Σαδ Φτ φσσ ±Φ∞Γεδ ∩σ≡σΓεΣα ±≥≡εΩΦ, Φ ε≥εß≡αµασ∞ ≡στ≤δⁿ≥α≥ φα Ωεφ±εδΦ ±σ≡Γσ≡α: System.out.println("> " + str); ╟α≥σ∞ ∩εδ≤≈σφφα ±≥≡εΩα ε≥∩≡αΓδ σ≥± εß≡α≥φε ΩδΦσφ≥±Ωε∞≤ ∩≡ΦδεµσφΦ■, Σδ ≈σπε Γ√τ√Γασ≥± ∞σ≥εΣ write: os.write(buf, 0, lenght); ╠σ≥εΣ≤ write ∩σ≡σΣασ≥± ±±√δΩα φα ∞α±±ΦΓ, ±∞σ∙σφΦσ φα≈αδα Σαφφ√⌡ Γ ²≥ε∞ ∞α±±ΦΓσ, ≡αΓφεσ φ≤δ■, Φ ≡ατ∞σ≡ ∩≡Φφ ≥επε ßδεΩα Σαφφ√⌡. ─δ Φ±Ωδ■≈σφΦ ταΣσ≡µσΩ Γ ∩σ≡σΣα≈σ Σαφφ√⌡ Φτ-τα φαΩε∩δσφΦ Σαφφ√⌡ Γ ß≤⌠σ≡σ (∩≡Φ Φ±∩εδⁿτεΓαφΦΦ ß≤⌠σ≡ΦτεΓαφφ√⌡ ∩ε≥εΩεΓ) φσεß⌡εΣΦ∞ε ∩≡Φφ≤ΣΦ≥σδⁿφε ±ß≡α±√Γα≥ⁿ ±εΣσ≡µΦ∞εσ ß≤⌠≡σα ∞σ≥Σε∞ flush: os.flush(); ╚ ⌡ε≥ Γ φα°σ∞ ±δ≤≈ασ ∞√ φσ ∩εδⁿτ≤σ∞± ß≤⌠σ≡ΦτεΓαφφ√∞Φ ∩ε≥εΩα∞Φ, ∞√ ΓΩδ■≈ΦδΦ Γ√τεΓ ²≥επε ∞σ≥εΣα Σδ ∩≡Φ∞σ≡α. ╥σ∩σ≡ⁿ ε ταΓσ≡°α■∙Φ⌡ ΣσΘ±≥ΓΦ ⌡ ∩ε±δσ ∩≡σ≡√ΓαφΦ ÷ΦΩδα ∩εδ≤≈σφΦ , ε≥εß≡αµσφΦ Φ ∩σ≡σΣα≈Φ ±≥≡εΩ. ═α°σ ∩≡ΦδεµσφΦσ Γφ ∞ εß≡ατε∞ ταΩ≡√Γασ≥ Γ⌡εΣφεΘ Φ Γ√⌡εΣφεΘ ∩ε≥εΩΦ Σαφφ√⌡, ±εΩσ≥, α ≥αΩµσ εß·σΩ≥ Ωδα±±α ServerSocket, ± Φ±∩εδⁿτεΓαφΦσ∞ Ωε≥ε≡επε ß√δ ±ετΣαφ Ωαφαδ ∩σ≡σΣα≈Φ Σαφφ√⌡: is.close(); os.close(); s.close(); ss.close(); ╚±⌡εΣφ√Θ ≥σΩ±≥ ΩδΦσφ≥±Ωεπε ∩≡ΦδεµσφΦ SocketClient╚±⌡εΣφ√Θ ≥σΩ±≥ ΩδΦσφ≥±Ωεπε ∩≡ΦδεµσφΦ SocketClient ∩≡ΦΓσΣσφ Γ δΦ±≥Φφπσ 4. ╦Φ±≥Φφπ 4. ╘αΘδ SocketClient.java import java.io.*; import java.net.*; import java.util.*; public class SocketClient { public static void main(String args[]) { byte bKbdInput[] = new byte[256]; Socket s; InputStream is; OutputStream os; try { System.out.println( "Socket Client Application" + "\nEnter any string or" + " 'quit' to exit..."); } catch(Exception ioe) { System.out.println(ioe.toString()); } try { s = new Socket("localhost",9999); is = s.getInputStream(); os = s.getOutputStream(); byte buf[] = new byte[512]; int length; String str; while(true) { length = System.in.read(bKbdInput); if(length != 1) { str = new String(bKbdInput, 0); StringTokenizer st; st = new StringTokenizer( str, "\r\n"); str = new String( (String)st.nextElement()); System.out.println("> " + str); os.write(bKbdInput, 0, length); os.flush(); length = is.read(buf); if(length == -1) break; str = new String(buf, 0); st = new StringTokenizer( str, "\r\n"); str = new String( (String)st.nextElement()); System.out.println(">> " + str); if(str.equals("quit")) break; } } is.close(); os.close(); s.close(); } catch(Exception ioe) { System.out.println(ioe.toString()); } try { System.out.println( "Press <Enter> to " + "terminate application..."); System.in.read(bKbdInput); } catch(Exception ioe) { System.out.println(ioe.toString()); } } } ╬∩Φ±αφΦσ Φ±⌡εΣφεπε ≥σΩ±≥α ΩδΦσφ≥±Ωεπε ∩≡ΦδεµσφΦ SocketClient┬φ≤≥≡Φ ∞σ≥εΣα main ΩδΦσφ≥±Ωεπε ∩≡ΦδεµσφΦ SocketClient ε∩≡σΣσδσφ√ ∩σ≡σ∞σφφ√σ Σδ ΓΓεΣα ±≥≡εΩΦ ± ΩδαΓΦα≥≤≡√ (∞α±±ΦΓ bKbdInput), ±εΩσ≥ s Ωδα±±α Socket Σδ ≡αßε≥√ ± ±σ≡Γσ≡ε∞ SocketServ, Γ⌡εΣφεΘ ∩ε≥εΩ is Φ Γ√⌡εΣφεΘ ∩ε≥εΩ os, Ωε≥ε≡√σ ±Γ ταφ√ ± ±εΩσ≥ε∞ s. ╧ε±δσ Γ√ΓεΣα φα Ωεφ±εδⁿ ∩≡Φπδα°α■∙σΘ ±≥≡εΩΦ ΩδΦσφ≥±Ωεσ ∩≡ΦδεµσφΦσ ±ετΣασ≥ ±εΩσ≥, Γ√τ√Γα Ωεφ±≥≡≤Ω≥ε≡ Ωδα±±α Socket: s = new Socket("localhost",9999); ┬ ∩≡ε÷σ±±σ ε≥δαΣΩΦ ∞√ τα∩≤±ΩαδΦ ±σ≡Γσ≡ Φ ΩδΦσφ≥ φα εΣφε∞ Φ ≥ε∞ µσ ≤τδσ, ∩ε²≥ε∞≤ Γ Ωα≈σ±≥Γσ αΣ≡σ±α ±σ≡Γσ≡α ≤Ωαταφα ±≥≡εΩα "localhost". ═ε∞σ≡ ∩ε≡≥α ±σ≡Γσ≡α SocketServ ≡αΓσφ 9999, ∩ε²≥ε∞≤ ∞√ Φ ∩σ≡σΣαδΦ Ωεφ±≥≡≤Ω≥ε≡≤ ²≥ε τφα≈σφΦσ. ╧ε±δσ ±ετΣαφΦ ±εΩσ≥α φα°σ ΩδΦσφ≥±Ωεσ ∩≡ΦδεµσφΦσ ±ετΣασ≥ Γ⌡εΣφεΘ Φ Γ√⌡εΣφεΘ ∩ε≥εΩΦ, ±Γ ταφφ√σ ± ²≥Φ∞ ±εΩσ≥ε∞: is = s.getInputStream(); os = s.getOutputStream(); ╥σ∩σ≡ⁿ ΩδΦσφ≥±Ωεσ ∩≡ΦδεµσφΦσ πε≥εΓε εß∞σφΦΓα≥ⁿ± Σαφφ√∞Φ ± ±σ≡Γσ≡ε∞. ▌≥ε≥ εß∞σφ Γ√∩εδφ σ≥± Γ ÷ΦΩδσ, ≤±δεΓΦσ∞ ταΓσ≡°σφΦ Ωε≥ε≡επε Γδ σ≥± ΓΓεΣ ∩εδⁿτεΓα≥σδσ∞ ±≥≡εΩΦ "quit". ┬φ≤≥≡Φ ÷ΦΩδα ∩≡ΦδεµσφΦσ ≈Φ≥ασ≥ ±≥≡εΩ≤ ± ΩδαΓΦα≥≤≡√, τα∩Φ±√Γα σσ Γ ∞α±±ΦΓ bKbdInput: length = System.in.read(bKbdInput); ╩εδΦ≈σ±≥Γε ΓΓσΣσφφ√⌡ ±Φ∞ΓεδεΓ ±ε⌡≡αφ σ≥± Γ ∩σ≡σ∞σφφεΘ length. ─αδσσ σ±δΦ ∩εδⁿτεΓα≥σδⁿ ΓΓσδ ±≥≡εΩ≤, α φσ ∩≡ε±≥ε φαµαδ φα ΩδαΓΦ°≤ <Enter>, ²≥α ±≥≡εΩα ε≥εß≡αµασ≥± φα Ωεφ±εδΦ Φ ∩σ≡σΣασ≥± ±σ≡Γσ≡≤: os.write(bKbdInput, 0, length); os.flush(); ╤≡ατ≤ ∩ε±δσ ∩σ≡σΣα≈Φ ±ß≡α±√Γασ≥± ß≤⌠σ≡ Γ√⌡εΣφεπε ∩ε≥εΩα. ─αδσσ ∩≡ΦδεµσφΦσ ≈Φ≥ασ≥ ε≥Γσ≥, ∩ε±√δασ∞√Θ ±σ≡Γσ≡ε∞, Γ ß≤⌠σ≡ buf: length = is.read(buf); ═α∩ε∞φΦ∞, ≈≥ε φα° ±σ≡Γσ≡ ∩ε±√δασ≥ ΩδΦσφ≥≤ ∩≡Φφ ≥≤■ ±≥≡εΩ≤ Γ φσΦτ∞σφφε∞ ΓΦΣσ. ┼±δΦ ±σ≡Γσ≡ ταΩ≡√δ Ωαφαδ, ≥ε ∞σ≥εΣ read ΓετΓ≡α∙ασ≥ τφα≈σφΦσ -1. ┬ ²≥ε∞ ±δ≤≈ασ ∞√ ∩≡σ≡√Γασ∞ ÷ΦΩδ ΓΓεΣα Φ ∩σ≡σΣα≈Φ ±≥≡εΩ: if(length == -1) break; ┼±δΦ µσ ε≥Γσ≥ ±σ≡Γσ≡α ∩≡Φφ ≥ ≤±∩σ°φε, ∩≡Φφ ≥√σ Σαφφ√σ τα∩Φ±√Γα■≥± Γ ±≥≡εΩ≤ str, Ωε≥ε≡α ε≥εß≡αµασ≥± φα Ωεφ±εδΦ ΩδΦσφ≥α: System.out.println(">> " + str); ╧σ≡σΣ ταΓσ≡°σφΦσ∞ ±ΓεσΘ ≡αßε≥√ ΩδΦσφ≥ ταΩ≡√Γασ≥ Γ⌡εΣφεΘ Φ Γ√⌡εΣφεΘ ∩ε≥εΩΦ, α ≥αΩµσ ±εΩσ≥, φα Ωε≥ε≡ε∞ Γ√∩εδφ δα±ⁿ ∩σ≡σΣα≈α Σαφφ√⌡: is.close(); os.close(); s.close(); |